RMI - Example
Both Server and client are in same machine and in same directory
Search.java // Interface import java.rmi.*; public interface Search extends Remote { // Declaring the method prototype public String find(String search) throws RemoteException; } ////SearchQuery class implementing Search Interface import java.rmi.*; import java.rmi.server.*; public class SearchQuery extends UnicastRemoteObject implements Search { // Default constructor to throw RemoteException // from its parent constructor SearchQuery() throws RemoteException { super(); } // Implementation of the query interface public String find(String search) throws RemoteException { String result; if (search.equals("Java is Coffee")) result = "Yes, Java is Coffee"; else result = "No, Java is not coffee"; return result; } } ///SearchServer -- waiting for client request import java.rmi.*; import java.rmi.registry.*; import java.rmi.server.UnicastRemoteObject; public class SearchServer { public SearchServer(){} public static void main(String args[]) { try { Search stub = new SearchQuery(); //Search stub = (SearchQuery) UnicastRemoteObject.exportObject(obj, 0); //Registry registry = LocateRegistry.createRegistry(1099); //System.out.println("RMI registry exported."); Naming.bind("rmi://localhost:1099/find",stub); //registry.bind("search", stub); System.out.println("Search Server is listening..."); } catch(Exception ae) { System.out.println("SearchServer: "+ae); } } } ///Client asking for service from server import java.rmi.*; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class ClientRequest { private static Search stub = null; private ClientRequest(){} public static void main(String args[]) { String answer,value="Java is Coffee"; try { Registry reg = LocateRegistry.getRegistry("localhost"); stub = (Search) reg.lookup("find"); answer = stub.find(value); // lookup method to find reference of remote object System.out.println("Answer: "+answer); } catch(Exception ae) { System.out.println("Client Request: "+ae.getMessage()); } } }
Executing :
E:\rmi>javac *.java E:\rmi>start rmiregistry E:\rmi>javac SearchServer.java E:\rmi>start rmiregistry //Starting Server E:\rmi>java SearchServer Search Server is listening...
//Client E:\rmi>java ClientRequest Answer: Yes, Java is Coffee